﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using DeliveryPlus.Web.Classes.Enums;
using DeliveryPlus.Web.Controllers;
using DeliveryPlus.Web.DAL.Entities;

namespace DeliveryPlus.Web.Areas.ControlPanel.Controllers
{
    /// <summary>
    /// Контроллер управления заказами
    /// </summary>
    public class ManageOrdersController : BaseController
    {
        /// <summary>
        /// Главная страница со списком заказов
        /// </summary>
        /// <returns></returns>
        public ActionResult Index()
        {
            // Извлекаем заказы
            var orders = DataContext.Orders.Where(o => o.Status >= (short) OrderStatus.Checkout).OrderByDescending(o => o.DateCreated).ToList();
            return View(orders);
        }

        /// <summary>
        /// Отображает информацию по указанному заказу
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult Edit(long id)
        {
            var order = DataContext.Orders.FirstOrDefault(o => o.Id == id);
            if (order == null)
            {
                return RedirectToAction("Index");
            }

            return View(order);
        }


        /// <summary>
        /// Обновляет статус указанного заказа
        /// </summary>
        /// <param name="model">Модель заказа</param>
        /// <returns></returns>
        [HttpPost]
        public ActionResult Update(Order model)
        {
            var order = DataContext.Orders.FirstOrDefault(o => o.Id == model.Id);
            if (order == null)
            {
                return RedirectToAction("Index");
            }

            order.Status = model.Status;
            DataContext.SubmitChanges();

            return RedirectToAction("Index");
        }
    }
}
